Scroll to navigation

SYSCONF(3) Podręcznik programisty Linuksa SYSCONF(3)

NAZWA

sysconf - pobieranie informacje o konfiguracji

SKŁADNIA

#include <unistd.h>

long sysconf(int name);

OPIS

POSIX pozwala testować w czasie kompilowania aplikacji lub w czasie jej działania, czy pewne opcje są wspierane lub jakie są wartości pewnych konfigurowalnych stałych lub limitów.

W czasie kompilacji jest to robione przez zainkludowanie <unistd.h> lub <limits.h> i testowanie wartości pewnych makr.

W czasie działania programu, można odpytać o wartości liczbowe, używając opisywanej tutaj funkcji sysconf(). Wartości liczbowe dotyczące systemu plików, w którym jest umieszczony dany plik, można uzyskać, wywołując funkcje fpathconf(3) i pathconf(3). Wartości będące łańcuchami znaków zwraca funkcja confstr(3).

Wartości zwracane przez powyższe funkcje są stałymi dotyczącymi konfiguracji systemu, które nie zmienią się przez cały czas życia procesu.

Dla opcji zazwyczaj istnieje stała _POSIX_COŚ, która może być zdefiniowana w <unistd.h>. Jeżeli nie jest zdefiniowana, można uzyskać jej wartość w czasie działania programu. Jeżeli wartością jest -1, to dana opcja nie jest wspierana w systemie. Wartość 0 oznacza, że istnieją odpowiednie funkcje i pliki nagłówkowe, ale należy sprawdzić w czasie działania, w jakim stopniu dana opcja jest wspierana. Wartość inna niż -1 i 0 oznacza, że dana opcja jest wspierana. Zazwyczaj wartości (takie jak 200112L) oznaczają rok i miesiąc rewizji standardu POSIX opisującej tę opcję. Dopóki odpowiedni standard POSIX opisujący opcję nie zostanie opublikowany, glibc używa wartości 1, aby zasygnalizować, że opcja jest wspierana. Odpowiednim argumentem funkcji sysconf() będzie _SC_COŚ. Listę opcji można znaleźć w posixoptions(7).

Dla zmiennych lub limitów zazwyczaj istnieje stała _COŚ definiowana w <limits.h> lub _POSIX_COŚ definiowana w <unistd.h>. Stała nie będzie zdefiniowana, jeżeli limit nie jest określony. Jeżeli stała jest zdefiniowana, to określa gwarantowany limit, ale w rzeczywistości może być wspierana wartość większa niż wynosi wartość tej stałej. Jeśli aplikacja chce zrobić użytek ze zmiennych, których wartości mogą się różnić w zależności od systemu, może wywołać funkcję sysconf(). Argumentem funkcji sysconf() będzie _SC_COŚ.

Zmienne POSIX.1

W tabeli poniżej podajemy nazwę zmiennej, nazwę argumentu funkcji sysconf(), używanego do odpytania o jej wartość, oraz krótki opis.

Najpierw wartości zgodne z POSIX.1.

Maksymalna długość argumentów funkcji z rodziny exec(3). Nie może być mniejsza niż _POSIX_ARG_MAX (4096).
Maksymalna liczba równoczesnych procesów jednego użytkownika. Nie może być mniejsza niż _POSIX_CHILD_MAX (25).
Maksymalna długość nazwy komputera, pomijając końcowy bajt NULL, zwracana przez gethostname(2). Nie może być mniejsza niż _POSIX_HOST_NAME_MAX (255).
Maksymalna długość nazwy użytkownika, łącznie z końcowym znakiem NULL. Nie może być mniejsza niż _POSIX_LOGIN_NAME_MAX (9).
Liczba tyknięć zegara na sekundę. Odpowiadająca jej zmienna jest przestarzała, a była oczywiście nazwana CLK_TCK. (Uwaga: makro CLOCKS_PER_SEC nie dostarcza informacji: jego wartość musi być równa 1000000).
Maksymalna liczba plików, które proces może mieć otwarte w dowolnym czasie. Nie może być mniejsza niż _POSIX_OPEN_MAX (20).
Rozmiar strony w bajtach. Nie może być mniejszy niż 1. (Niektóre systemy używają zamiast tego PAGE_SIZE).
Liczba powtórzonych wystąpień BRE dopuszczalnych w regexec(3) i regcomp(3). Nie może być mniejsza niż _POSIX2_RE_DUP_MAX (255).
Maksymalna liczba strumieni, którą proces może otworzyć w dowolnym czasie. Jeśli jest zdefiniowana, to ma taką samą wartość jak standardowe makro FOPEN_MAX w C. Nie może być mniejsza niż _POSIX_STREAM_MAX (8).
Maksymalna liczba dowiązań symbolicznych w ścieżce nie powodująca zwrócenia błędu ELOOP. Nie może być mniejsza niż _POSIX_SYMLOOP_MAX (8).
Maksymalna długość nazwy urządzenia terminalowego, włączając końcowy znak NULL. Nie może być mniejsza niż _POSIX_TTY_NAME_MAX (9).
Maksymalna liczba bajtów w nazwie strefy czasowej. Nie może być mniejsza niż _POSIX_TZNAME_MAX (6).
_POSIX_VERSION - _SC_VERSION
Określa rok i miesiąc, w formacie YYYYMML, w którym został zaakceptowany standard POSIX.1. Na przykład wartość 199009L oznacza wersję standardu z września 1990 roku.

Zmienne POSIX.2

Następnie podajemy wartości POSIX.2 określające limity dla programów użytkowych.

Określa maksymalną wartość obase akceptowaną przez program użytkowy bc(1).
Określa maksymalną dopuszczalną liczbę elementów w tabelach w programie bc(1).
Określa maksymalną wartość scale akceptowaną przez program użytkowy bc(1).
Określa maksymalną długość łańcucha znaków akceptowanego przez bc(1).
Określa maksymalną liczbę wag, które można przypisać do wpisu słowa kluczowego LC_COLLATE order w pliku definicji ustawień regionalnych.
Określa maksymalną liczbę wyrażeń zagnieżdżonych w nawiasach, akceptowaną przez program expr(1).
Maksymalna długość linii wejściowej (łącznie ze znakiem końca linii) programu użytkowego pochodzącej albo ze standardowego wejścia, albo z pliku.
Maksymalna liczna powtórzonych wystąpień wyrażenia regularnego, jeżeli jest używana notacja \{m,n\}.
Określa wersję standardu POSIX.2 w formacie YYYYMML.
Określa, czy są wspierane użytki zgodne z POSIX.2 służące do rozwijania oprogramowania w języku C.
Określa, czy są wspierane użytki zgodne z POSIX.2 służące do rozwijania oprogramowania w Fortranie.
Określa, czy są wspierane programy użytkowe POSIX.2, służące do uruchamia programów w Fortranie.
_POSIX2_LOCALEDEF - _SC_2_LOCALEDEF
Określa, czy jest wspierane tworzenie ustawień regionalnych POSIX.2 przez localedef(1) .
Określa, czy są wspierane użytki zgodne z POSIX.2 służące do rozwijania oprogramowania.

Poniższe wartości także istnieją, ale może nie być ich w standardzie.


- _SC_PHYS_PAGES
Liczba stron pamięci fizycznej. Proszę zauważyć, że nie jest możliwe, aby iloczyn tej wartości z _SC_PAGE_SIZE przekroczył (overflow) dopuszczalny zakres wartości liczbowych.

- _SC_AVPHYS_PAGES
Liczba obecnie dostępnych stron fizycznej pamięci.

- _SC_NPROCESSORS_CONF
Liczba skonfigurowanych procesorów.

- _SC_NPROCESSORS_ONLN
Liczba obecnie dostępnych procesorów.

WARTOŚĆ ZWRACANA

Jeżeli argument name jest niepoprawny, to zwracane jest -1, a errno jest ustawiane na EINVAL. W przeciwnym wypadku wartością zwracaną jest wartość zasobu systemowego, a wartość errno nie jest zmieniana. W przypadku opcji zwracana jest wartość dodatnia, jeśli opcja jest dostępna, a -1, jeśli nie jest. W przypadku limitów -1 oznacza, że limit nie został określony.

ZGODNE Z

POSIX.1-2001.

BŁĘDY

Użycie ARG_MAX jest skomplikowane, ponieważ nie jest określone, jak dużo przestrzeni argumentów funkcji exec(3) jest zabierane przez zmienne środowiskowe użytkownika.

Niektóre zwracane wartości mogą być duże; nie są one odpowiednie do przydzielania pamięci.

ZOBACZ TAKŻE

bc(1), expr(1), getconf(1), locale(1), fpathconf(3), pathconf(3), posixoptions(7)

O STRONIE

Angielska wersja tej strony pochodzi z wydania 3.40 projektu Linux man-pages. Opis projektu oraz informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

Autorem polskiego tłumaczenia niniejszej strony podręcznika man jest Robert Luberda <robert@debian.org>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.40 oryginału.

2012-04-15 GNU